package demo06;

/*
如何才能知道一个父类引用的对象，本来是什么子类？
格式：
对象 instanceof 类名称
这将会得到一个Boolean值结果，也就是判断前面的对象能不能当做后面类型的实例。
 */
public class Demo02Instanceof {
    public static void main(String[] args) {
        Animal animal = new Dog();//本来是一只狗
        animal.eat();//猫吃鱼

        //如果希望调用子类特有方法，需要向下转型
        //判断一下父类引用animal本来是不是Dog
        if (animal instanceof Dog) {
            Dog dog = (Dog) animal;
            dog.watchhouse();
        }
        if (animal instanceof Cat) {//判断一下animal本来是不是Cat
            Cat cat = (Cat) animal;
            cat.catchMouse();
        }
        giveMeAPat(new Dog());
    }

    public static void giveMeAPat(Animal animal) {

    }


}
/*
接口多态的总和案例
案例分析：
USB接口，包含打开设备功能、关闭设备功能。
笔记本类，包含开机功能、关机功能、使用USB设备功能。开机 powerOn()  关机powerOff()  使用设备useDevice(USB usb)
鼠标类，要实现USB接口，并具备点击的方法。关机(powerOff())
键盘类，要实现USB接口，具备敲击的方法
 */